perm filename HEINIT.FAI[LIB,HE] blob sn#004116 filedate 1972-05-25 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00004 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	ENTRY HEINIT
 00004 00003		LSH N,7
 00006 00004	GGNAM:	SETZM TEM		THIS SUBR GETS A NAME FROM TTY
 00007 ENDMK
⊗;
ENTRY HEINIT

	TITLE HEINIT - SECOND SEGMENT REINITIALIZATION

NAM←1
DEV←2
T←3
N←4
TEM←5
P←17

OPDEF	CORE [CALLI 11]
OPDEF	CORE2 [CALLI 400015]
OPDEF	POINTS [712B8]

EXTERNAL SETFIL, SETDEV, JOBREL

HEINIT:	MOVE -3(P)
	HRRM TAB;		STORE TABLE START
	MOVE NAM,-2(P);		FILE NAME
	MOVE DEV,-1(P);		DEVICE
	JUMPN NAM,.+3
	SKIPN NAM,SETFIL;	USE OLD FILE NAME
	JRST [	GOAGIN:OUTSTR [ASCIZ .SEGMENT FILE NAME
.]
		PUSHJ P,GGNAM;	NO OLD FILE NAME
		MOVE NAM,TEM
		JRST .+1]
	JUMPN DEV,.+3
	SKIPN DEV,SETDEV;	USE OLD DEVICE
	JRST [	OUTSTR [ASCIZ .DEVICE
.]
		PUSHJ P,GGNAM;	NO OLD DEVICE
		MOVE DEV,TEM
		JRST .+1]
	MOVEM NAM,SEGNAM;	SET UP INIT AND LOOKUP BLOCKS
	MOVEM DEV,INTT
	SETZM SEGNAM+3
	HLLZS SEGNAM+1
RELOK:	POINTS BLK;		CHECK FOR UNKNOWN JOBS
	SETZM TEMP#;		LINKED TO OUR 2ND SEG
	SETZM T
LOOP:	SKIPN N,BLK(T);		BY COMPARING LIST OF LINKED JOBS
	JRST OUTLAB;		TO JOB LIST IN HE
	MOVEI TEM,=15
TAB:	CAME N,(TEM)
	SOJGE TEM,.-1
	JUMPGE N,[AOJA T,LOOP]
	OUTSTR [ASCIZ .JOB .];	FOUND ONE - TYPE HIS NUMBER
	IDIVI N,12
	ADDI N,60
	LSH N,7
	ORI N,60(TEM)
	ROT N,-16
	MOVEM N,TEMP
	OUTSTR TEMP
	OUTSTR [ASCIZ . ATTACHED
.]
	AOJA T,LOOP

OUTLAB:	SKIPN TEMP;		DID WE FIND ANY?
	JRST .+4
	OUTSTR [ASCIZ .GET RID OF THEM AND CONTINUE
.]
	CALLI 12;		YES HALT UNTIL GONE
	JRST RELOK;		GO BACK AND CHECK AGAIN

	INIT 3,17;		GET SEGMENT
INTT:	0
	0
	JRST ERRSEG
	LOOKUP 3,SEGNAM
	JRST ERRSEG
	MOVS T,SEGNAM+3;	GET WORD COUNT
	HRLM T,LIOD;		AND SET UP INPUT
	MOVMS T
	MOVEM T,JOBSIZ#;	ALSO SAVE FOR LATER
	MOVE N,JOBREL;		HERE IS WHERE WE PUT IT
	MOVEM N,JOBEND#;	SO SAVE FOR RESTORING
	HRRM N,LIOD
	ADD T,JOBREL;		HERE IS NEW END OF LOWER SEG
	CORE T,;		EXPAND CORE
	JRST COR1ER;		WE LOSE
	INPUT 3,[LIOD:	0
		0];		READ IN 2ND SEGMENT
	MOVE T,JOBSIZ
	CORE2 T,;		GET UPPER SEGMENT OF RIGHT SIZE
	JRST COR2ER;		WE LOSE
	HRR T,LIOD;		BLT 2ND SEG INTO UPPER SEG
	HRLI T,1(T)
	HRRI T,400000
	MOVE N,JOBSIZ
	ADDI N,(T)
	BLT T,-1(N);		WATCH IT GO !!!
	MOVE T,JOBEND;		GET RID OF EXTRA LOWER SEG CORE
	CORE T,
	HALT;			SHOOT A SYSTEM PROGRAMMER
	MOVEM NAM,SEGNAM;	SAVE FILE AND DEVICE NAME
	MOVEM DEV,SETDEV
	SUB P,[XWD 4,4]
	JRST @4(P)
GGNAM:	SETZM TEM;		THIS SUBR GETS A NAME FROM TTY
	TTCALL 4,T
	SKIPA N,[POINT 6,TEM]
	TTCALL T
	CAIN T,15
	JRST [	TTCALL T;	DONE, FLUSH LINE FEED
		POPJ P,]
	CAILE T,140
	SUBI T,40;		CONVERT LOWER CASE
	SUBI T,40;		CONVERT TO SIXBIT
	IDPB T,N
	JRST GGNAM+3

COR1ER:	OUTSTR [ASCIZ .LOW.]
	CAIA
COR2ER:	OUTSTR [ASCIZ .UPPER.]
	OUTSTR [ASCIZ . CORE NOT AVAILABLE
.]
ERRSEG:	OUTSTR [ASCIZ .SEGMENT LOAD ERROR
.]
	SETZM SETDEV;		FORCE NEW DEVICE
	SETZM DEV
	JRST GOAGIN;		AND NEW FILE

BLK:	BLOCK =33
SEGNAM:	0
	SIXBIT /REL/
	BLOCK 2

	END